package com.thitech.sif.context;

import java.util.Map;

/**
 * 上下文工厂接口
 * 
 * @author shisheng.lian
 * 
 */
public interface IContextFactory {

	/**
	 * 根据Service Id获取Web Service请求对象
	 * 
	 * @param serviceId
	 *            全局唯一ID
	 * @return 根据Service Id没有找到则返回null
	 */
	public WSContext getWSContext(String serviceId);

	/**
	 * 根据Service Id获取Socket请求对象
	 * 
	 * @param serviceId
	 *            全局唯一ID
	 * @return 根据Service Id没有找到则返回null
	 */
	public SocketContext getSocketContext(String serviceId);
	
	/**
	 * 根据Service Id获取Context对象
	 * @param serviceId
	 * @return
	 */
	public AbsContext getContext(String serviceId);

	/**
	 * 把Context放入Context容器中
	 * @param serviceId
	 * @param context
	 */
	public AbsContext putContext(String serviceId, AbsContext context);

	/**
	 * 把Context放入Context容器中
	 * @param serviceId
	 * @param context
	 */
	public void putContext(Map<String, AbsContext> contexts);

	/**
	 * 获取所有Context对象
	 * @return
	 */
	public Map<String, AbsContext> getAllContext();
	
	/**
	 * 创建WSContext对象
	 * @return
	 */
	public WSContext createWSContext();
	
	/**
	 * 创建SocketContext对象
	 * @return
	 */
	public SocketContext createSocketContext();
	
	/**
	 * 根据Service Id判断对应的Context是否存在
	 * @param serviceId
	 * @return
	 */
	public boolean isExist(String serviceId);
	
	/**
	 * 在Context集合中删除指定的Context
	 * @param serviceId
	 */
	public void remove(String serviceId);
	
	/**
	 * 清除所有已存在的Context
	 */
	public void removeAll();
}
